/**
 * 
 */
package util.beans;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

import util.clock.VectorClock;
import util.interfaces.IObjectToSend;

/**
 * @author v
 *
 */
public class ObjectToSend implements IObjectToSend {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -7357797037403416949L;
		
	protected Object data = null; 
	
	/* (non-Javadoc)
	 * @see util.interfaces.IObjectToSend#setObject(java.lang.Object)
	 */
	@Override
	public void setData(Object data) {
		this.data = data;
	}
	
	@Override
	public Object getData() {
		return data;
	}
	
	@Override
	public byte[] getObject() throws IOException {
		ByteArrayOutputStream output = new ByteArrayOutputStream();
		ObjectOutputStream oOut = new ObjectOutputStream(output);
		oOut.writeObject(this);  //Aggiorno il vc e lo allego al messaggio che sto per inviare
		oOut.writeObject(VectorClock.getInstance().send().toArray()); //aggiorno il vector e lo inserisco nel messaggio
		oOut.writeObject(VectorClock.myId); //inserisco il mio identificativo
		oOut.writeObject(this.hashCode());  //inserisco un identificativo univoco del messaggio
		//TODO: controllare se posso inserire vector
		
		return output.toByteArray();
	}
	


}
